package com.example.javascaffold.utils;


import java.math.BigDecimal;
import java.text.NumberFormat;

/**
 * //TODO 数字格式化工具
 * @author song
 * @date 17:37 2021/11/6
 * @param
 * @return
 * @other
**/
public class NumFormatUtils {

    private NumFormatUtils() {}

    /**
     * //TODO 保留bigdecimal的小数点后多少位
     * @author song
     * @date 17:40 2021/11/6
     * @param number
     * @param dotLength
     * @return
     * @other
    **/
    public static String format(BigDecimal number, Integer dotLength) {
        if (CheckParamUtils.isNullOrEmpty(number)) {
            return "";
        }
        NumberFormat nf = NumberFormat.getNumberInstance();
        // 保留两位样式 不够补0
        nf.setMaximumFractionDigits(dotLength);
        nf.setMinimumFractionDigits(dotLength);
        double doubleValue = number.setScale(dotLength, BigDecimal.ROUND_HALF_UP).doubleValue();
        return nf.format(doubleValue);
    }


    /**
     * //TODO 将int型数据后加小数点多少位 例如 ：int a = 123 format(a,2) 返回 123.00
     * @author song
     * @date 17:40 2021/11/6
     * @param number
     * @param dotLength
     * @return
     * @other
     **/
    public static String format(int number, Integer dotLength) {
        if (CheckParamUtils.isNullOrEmpty(number)) {
            return "";
        }
        NumberFormat nf = NumberFormat.getNumberInstance();
        // 保留两位样式 不够补0
        nf.setMaximumFractionDigits(dotLength);
        nf.setMinimumFractionDigits(dotLength);
        return nf.format(number);
    }

    /**
     * //TODO long类型数据后加小数点几位 例如 ：long a = 1234567890 format(a,3) 返回 1234567890.000
     * @author song
     * @date 17:40 2021/11/6
     * @param number
     * @param dotLength
     * @return
     * @other
     **/
    public static String format(Long number, Integer dotLength) {
        if (CheckParamUtils.isNullOrEmpty(number)) {
            return "";
        }
        NumberFormat nf = NumberFormat.getNumberInstance();
        // 保留两位样式 不够补0
        nf.setMaximumFractionDigits(dotLength);
        nf.setMinimumFractionDigits(dotLength);
        return nf.format(number);
    }

    /**
     *  Float类型数据后加小数点几位 例如 ：float a = 1524.00d format(a,2) 返回 1,524.00
     * @author song
     * @date 17:40 2021/11/6
     * @param number
     * @param dotLength
     * @return
     * @other
     **/
    public static String format(Float number, Integer dotLength) {
        if (CheckParamUtils.isNullOrEmpty(number)) {
            return "";
        }
        NumberFormat nf = NumberFormat.getNumberInstance();
        // 保留两位样式 不够补0
        nf.setMaximumFractionDigits(dotLength);
        nf.setMinimumFractionDigits(dotLength);
        return nf.format(number);
    }

    /**
     * //TODO Double类型数据后加小数点几位 例如 ：double a = 1524.0 format(a,3) 返回 1,524.000
     * @author song
     * @date 17:40 2021/11/6
     * @param number
     * @param dotLength
     * @return
     * @other
     **/
    public static String format(Double number, Integer dotLength) {
        if (CheckParamUtils.isNullOrEmpty(number)) {
            return "";
        }
        NumberFormat nf = NumberFormat.getNumberInstance();
        // 保留两位样式 不够补0
        nf.setMaximumFractionDigits(dotLength);
        nf.setMinimumFractionDigits(dotLength);
        return nf.format(number);
    }

    /**
     * //TODO  String类型数据后加小数点几位 例如 ：String a = "1524" (只能是整型的字符串) format(a,3) 返回 1,524.000
     * @author song
     * @date 17:40 2021/11/6
     * @param number
     * @param dotLength
     * @return
     * @other
     **/
    public static String format(String number, Integer dotLength) {
        if (CheckParamUtils.isNullOrEmpty(number)) {
            return "";
        }
        NumberFormat nf = NumberFormat.getNumberInstance();
        // 保留两位样式 不够补0
        nf.setMaximumFractionDigits(dotLength);
        nf.setMinimumFractionDigits(dotLength);
        return nf.format(Integer.parseInt(number));
    }
}
